package com.Clause;

public class Clause{

	ClauseProxy root = null;

	public Clause(){
	}

	public void setPredicat(Predicat predicat){
		this.root=new ClauseProxy(predicat);
	}

	public void setRoot(ClauseElement element){
		root = new ClauseProxy(element);
	}

	public void ajouterOperateurUnaire(OperateurUnaire operateur){
		operateur.setSuivant(root);
		root=new ClauseProxy(operateur);
	}

	public void ajouterOperateurBinaire(OperateurBinaire operateur, ClauseElement suivant){
		operateur.setPrecedent(root);
		operateur.setSuivant(new ClauseProxy(suivant));
		this.root = new ClauseProxy(operateur);
	}

	public String toString(){
		return root.toString();
	}
	
	public String toPrologString(){
		
		return root.toPrologString();		
		
	}
	
	public Clause copie(){
		Clause c = new Clause();
		c.setRoot(root.getElement().copie());
		return c;
	}

	public ClauseProxy getRoot() {
		return root;
	}

}
